// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef UI_DISPLAY_CHROMEOS_TEST_TEST_DISPLAY_LAYOUT_MANAGER_H_
#define UI_DISPLAY_CHROMEOS_TEST_TEST_DISPLAY_LAYOUT_MANAGER_H_

#include "base/macros.h"
#include "base/memory/scoped_vector.h"
#include "ui/display/chromeos/display_configurator.h"
#include "ui/display/chromeos/display_layout_manager.h"

namespace ui {
namespace test {

    class TestDisplayLayoutManager : public DisplayLayoutManager {
    public:
        TestDisplayLayoutManager(ScopedVector<DisplaySnapshot> displays,
            MultipleDisplayState display_state);
        ~TestDisplayLayoutManager() override;

        // DisplayLayoutManager:
        DisplayConfigurator::StateController* GetStateController() const override;
        DisplayConfigurator::SoftwareMirroringController*
        GetSoftwareMirroringController() const override;
        MultipleDisplayState GetDisplayState() const override;
        chromeos::DisplayPowerState GetPowerState() const override;
        bool GetDisplayLayout(const std::vector<DisplaySnapshot*>& displays,
            MultipleDisplayState new_display_state,
            chromeos::DisplayPowerState new_power_state,
            std::vector<DisplayConfigureRequest>* requests,
            gfx::Size* framebuffer_size) const override;
        std::vector<DisplaySnapshot*> GetDisplayStates() const override;
        bool IsMirroring() const override;

    private:
        ScopedVector<DisplaySnapshot> displays_;
        MultipleDisplayState display_state_;

        DISALLOW_COPY_AND_ASSIGN(TestDisplayLayoutManager);
    };

} // namespace test
} // namespace ui

#endif // UI_DISPLAY_CHROMEOS_TEST_TEST_DISPLAY_LAYOUT_MANAGER_H_
